package com.javaee.xiangyang.mapper;

import com.javaee.xiangyang.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface UserMapper {

    /**
     * 账户注册
     *
     * @param user 注册账号
     */
//    @Insert("insert into user values(#{userAccount}, #{userPassword}, #{userName}, #{userHead}, 1, #{userAddress}, 1)")
    void addUser(User user);

    /**
     * 查询所有用户信息
     *
     * @return 所有用户信息
     */
//    @Select("select * from user")
    List<User> findAllUser();

    /**
     * 根据用户状态查找用户信息  +  模糊查询
     * @return  对应的所有用户信息
     */
//    @Select("select * from user where userState = #{userState}")
    List<User> findAllUserByState(@Param("user") User user,@Param("string") String string);

    /**
     * 根据主键查询用户信息
     *
     * @param user 用户封装实体类
     * @return 用户信息
     */
//    @Select("select * from user where userAccount = #{userAccount}")
    User findByUserAccount(User user);

    /**
     * 用户修改个人信息
     *
     * @param user 用户封装实体类
     */
//    @Update("update user set userPassword = #{userPassword}, userName = #{userName}, userAddress = #{userAddress} where userAccount = #{userAccount}")
    void updateByUserAccount(User user);

    /**
     * 用户修改个人头像
     *
     * @param user 图片地址和用户账号
     */
//    @Update("update user set userHead = #{userHead} where userAccount = #{userAccount}")
    void updateByUserHeadAccount(User user);

    /**
     * 管理员封禁用户
     *
     * @param user 用户封装实体类
     */
//    @Update("update user set userState = #{userState} where userAccount = #{userAccount}")
    void updateStateByUserAccount(User user);

    /**
     * 充值
     * 购买商品、退货
     *
     * @param user 封装类
     * @param type 加减 true 为+ false 为-
     */
//    @UpdateProvider(type = SQLProviderUtil.class, method = "updateMoneyByUserIdUtil")
    void updateMoneyByUserAccount(@Param("user") User user, @Param("type") boolean type);

}
